package com.hb.B_面向对象.K_多态和拓展

/**
 * 除此之外，实际开发中我们也可能将拓展函数定义在一个Class内部统一管理。
 * 当拓展函数定义在Extends类内部时，情况与之前就不一样了：这个时候你会发现
 * exchange2方法无法调用了（是因为之前调用exchange方法的时候，放在类的外部）。
 * 为什么无法调用了：是因为我们可以从反编译看到 exchange2方法上已经没有static关键字修饰了
 * 所以当拓展方法在一个Class内部时，我们只能在该类和该类的子类中进行调用。
 *
 */
class A_Class {
    private fun MutableList<Int>.exchange2(fromIndex:Int, toIndex:Int){
        val tmp= this[fromIndex]
        this[fromIndex]=this[toIndex]
        this[toIndex]=tmp
    }
}